#ifndef PROTOCOL_H
#define PROTOCOL_H

#define USER_ACCOUNT 20
#define BUFFER_SIZE 300
#define TIME_FORMAT	25
#define CHAT_RECORDS 10
#define PORT 12345
#define UINFO_LENGTH USER_ACCOUNT*2+4
#define ACHAT_LENGTH TIME_FORMAT+USER_ACCOUNT*2+BUFFER_SIZE+4


enum Active{

    _Logon = 0x00,      // 注册
    _Login,             // 登录
    _ChatOne = 0x02,    // 跟某人私聊
    _ChatGroup,         // 在群里发言
    _JoinGroup,         // 加群
    _ExitGroup          // 退群

};

typedef struct Msgdata{

    enum Active _act;            // 执行的动作
    char _acc[USER_ACCOUNT];     // 发消息方帐号
    char _pwd[USER_ACCOUNT];     // 发消息方密码
    char _who[USER_ACCOUNT];     // 接受消息方
    bool _isgroup;               // 是否是群发
    char _msg[BUFFER_SIZE];      // 发送的消息
    char _cancalstatue;          // 服务器返回状态

}msgdata;


typedef struct AchatRecord{

    char _sender[USER_ACCOUNT];
    char _receiver[USER_ACCOUNT];
    char _msgcontent[BUFFER_SIZE];
    char _time[TIME_FORMAT];

}Achat;

Achat* chatRecordList[CHAT_RECORDS];    // 聊天记录缓冲表，放满后写入`数据库`


// threadpool work function arg
typedef struct thFunctionArg{

    int epollfd;
    int sockfd;
    msgdata msg;

}thFunctionArg;



#endif
